1. Field of the Invention
The present invention relates to software design, and in particular, to identification and resolution of conflicts between design results in a parallel software design.
2. Description of Related Art
A software development process may be typically divided into three major stages: requirement analysis, software design, and software implementation. In the software design stage, software design is carried out in accordance with certain standards based on a requirement specification provided by the requirement analysis stage, and the design result is the blueprint for a programming engineer in the software implementation stage. In a large software development project, parallel design (also called distributed design or collaborative design) is always employed. In such an approach, different design tasks are first formed according to different function decomposition or other aspects (architecture layer, use case, etc) of the software in design. Then different design tasks may be allocated to different designers. Finally, a complete software design is generated by composing design results provided by different designers.
However, there are potential conflicts or inconsistencies among design results from different designers. For example, a common computing resource may be used by design artifacts of two different designers' designs (for example, a common database or data table is accessed, or a common function is called), but the design to the common resources are inconsistent or conflict. During software design, conflicts should be eliminated or mitigated in order to facilitate improving programming efficiency during the programming stage, reducing potential errors occurring in software execution, and maintaining the software. To resolve a conflict, it is first necessary to identify conflicts between design results by different designers. However, the complexity of design results makes it very difficult to manually identify a conflict between different design results, especially in a large software design project involving thousands of design artifacts.